﻿/*
按绩点排名 
Time Limit:2000MS  Memory Limit:32768K


Description:
有一些班级的学生需要按绩点计算并排名。每门课程的成绩只有在60分以上（含），才予以计算绩点。
课程绩点的计算公式为： (课程成绩 – 50)÷10×学分数
一个学生的总绩点为其所有课程绩点总和除以10。 

Input:
输入数据中含有一些班级（≤20）。每个班级的第一行数据n（≤10），a1，a2，a3，…，an，表示该班级共有n门课程，
每门课程的学分分别为a1，a2，a3，…，an；班级数据中的第二行数据为一个整数m（≤50），表示本班级有m个学生；
班级数据接下去有m行对应m个学生数据；
每行学生数据中的第一个为字串s1（s1中间没有空格），表示学生姓名，
后面跟有n个整数s1，s2，s3，…，sn，表示该学生各门课程的成绩（0≤si≤100）。 
Output:
以班级为单位输出各个学生按绩点分从大到小的排名。如果绩点分相同，则按学生名字的ASCII串值从小到大排名。
每个班级的排名输出之前应先给出一行，描述班级序号“class #：”（#表示班级序号），班级之间应空出一行。
排名时，每个学生占一行，列出名字和总绩点。学生输出宽度为10个字符，左对齐，再空出一格后列出总绩点。 
Sample Input:
1
3 3 4 3
3
张三   89 62 71
smith 98 50 80
王五   67 88 91
Sample Output:
class 1:
王五		3.26
smith     2.34
张三		2.28
*/

#include <string>
#include <algorithm>
#include <vector>
#include <iostream>
#include <iomanip>
using namespace std;

struct StudInfo{
	string name;
	double point;
	StudInfo(string& name_, double point_): name(name_), point(point_)
	{

	}
	friend
	ostream& operator << (ostream& os, const StudInfo& si)
	{
		os.precision(2);
		os<<fixed<<left<<setw(11)<<si.name<<si.point;
		return os;
	}
	friend
	bool comparator(const StudInfo &si1, const StudInfo & si2)
	{
		if(si1.point==si2.point)
			return si1.name<si1.name;
		else
			return si1.point>si2.point;
	}
};

int main()
{
	unsigned num_of_class;
	cin>>num_of_class;
	for (unsigned class_no=1U; class_no<=num_of_class; ++class_no)
	{
		unsigned num_of_course;
		cin>>num_of_course;

		vector<int> credits;
		credits.reserve(num_of_course+1);
		{
			for (unsigned course_no=0U; course_no<num_of_course; ++course_no)
			{
				int credit;
				cin>>credit;
				credits.push_back(credit);
			}
		}		
		unsigned num_of_staff;
		cin>>num_of_staff;		

		vector<StudInfo> studInfos;		
		studInfos.reserve(num_of_staff+1);

		for (unsigned staff_no=0U; staff_no<num_of_staff; ++staff_no)
		{
			string name;
			cin>>name;

			double point=0.0;
			for (unsigned course_no=0U; course_no<num_of_course; ++course_no)
			{
				int score;
				cin>>score;
				if(score<60)
					score=50;
				point += (score-50.0)*credits[course_no];
			}
			point/=100.0;

			studInfos.push_back(StudInfo(name, point));
		}
		sort(studInfos.begin(), studInfos.end(), comparator);

		if(1!=class_no)
			cout<<endl;
		cout<<"class "<<class_no<<":"<<endl;
		for (vector<StudInfo>::iterator it=studInfos.begin(); it!=studInfos.end(); ++it)
			cout<<(*it)<<endl;
	}
	return 0;
}

